# -*- conding:utf-8 -*-

"""
    实现一个自动取款机的存取款模 拟效果。要求有登陆和退出、查询余额、取钱，存钱等操作。
"""
user = [
    {"user": "admin", "password": "123", "money": 100},
    {"user": "ayy", "password": "123", "money": 10000},
    {"user": "ass", "password": "123", "money": 1250},
]

def show_ATM():
    """
    展示ATM
    :return:
    """
    while True:
        print("#"*20)
        print("{}".format("1.登录"))
        print("{}".format("2.退出"))
        choice = input("请输入选择-->")
        if choice.isdigit() and choice in [1, 2]:
            # 确认是否输入数字，并且是否在1，2选项内
            print("输入错误选项！")
        elif choice == "1":
            login()
        elif choice == '2':
            print("Bye")
            break
        else:
            print("请重新输入选择！")

def login():
    """
    登陆界面
    :return:
    """
    while True:
        print("*"*20)
        name = input("请输入用户名（输入n 返回）：")
        for index, item in enumerate(user, 0):
            if name == item["user"]:
                user_count = index
                # 匹配当前当用户信息，记录当前用户
                pwd = input("请输入密码：")
                if pwd == user[user_count]["password"]:
                    caozuo(user_count)
                else:
                    print("请重新输入用户名和密码")
                    break
            elif name.lower() == 'n':
                return
            else:
                print("用户名不存在！")
                break


def caozuo(user_count):
    """
    当前用户的个人信息操作界面
    :param user_count:匹配用户，记录统计的用户序号当前用户的个人信息
    :return:如果输入（4）退出，初始界面
    """
    while True:
        print("#"*20, "操作界面", "#"*20)
        print('{:5} {:10}'.format('1.余额', '2.存钱'))
        print('{:5} {:10}'.format('3.取钱', '4.返回登陆界面（q直接退出）'))
        choice = input("请输入选择：")
        ATM_list = [checkmoney, savemoney, getmoney]
        if not choice.isdigit() and choice in [1, 2, 3]:
            # 确认是否输入数字，并且是否在选项列表内
            print("重新输入！")
        elif choice == '4':
            return show_ATM()
        elif choice.lower() == 'q':
            print("Bye")
            exit()
        else:
            ATM_list[int(choice)-1](user_count)

def checkmoney(user_count):
    """
    查看余额
    :param user_count:匹配的用户序号，当前用户的个人信息
    :return:None，默认返回上一级菜单
    """
    print("############ 余额 ############")
    check_money = user[user_count]["money"]
    print("余额---->", check_money)

def savemoney(user_count):
    """
    存钱界面
    :param user_count:匹配的用户序号，当前用户的个人信息
    :return:None，默认返回上一级菜单
    """
    print("########## 存钱界面 ##########")
    money = input("请存钱（输入数字）：")
    if money.isdigit():
        # 可以加上循环，但是一般ATM都是直接重新选择进去输入
        user[user_count]["money"] += int(money)
        print("存钱成功")
    else:
        print("输入错误！")

def getmoney(user_count):
    """
    取钱界面
    :param user_count:匹配的用户序号，当前用户的个人信息
    :return:None，默认返回上一级菜单
    """
    print("############ 取钱 ##############")
    money = input("请输入取钱的数量：")
    user_money = user[user_count]["money"]
    # 取出当前的用户 money
    if user_money < int(money):
        # 输入取钱数量大于余额，不符合要求
        # 可以加上循环，但是一般ATM都是直接重新选择进去输入
        print("取钱失败！余额不足")
    else:
        user_money -= int(money)
        print("取钱成功")


show_ATM()



